package com.jdk.demo.fileChannel.openfile;

import java.io.File;
import java.nio.ByteBuffer;
import java.nio.channels.FileChannel;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;

public class Sparse {
	
	// 创建稀疏文件，与CREATE_NEW选项一起使用，此选项提供了一个提示，表明新文件是稀疏的。当文件系统不支持创建稀疏文件时，则忽略该选项
	// 稀疏文件：例如创建一个1g的文件，但前面都没有内容，只在最后写入字符a，但也需要占用1g空间。解决办法就是对那些不存储数据的空间不让其占用硬盘容量，
	// 等以后写入有效数据时再占用硬盘容量，这样就达到了提高硬盘空间利用率的目的，这个需求就可以通过创建1个稀疏文件实现
	public static void main(String[] args) throws Exception {
		File file = new File("s.txt");
		Path path = file.toPath();
		FileChannel fileChannel = FileChannel.open(path, StandardOpenOption.SPARSE, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
		long fileSize = Integer.MAX_VALUE;
		fileSize = fileSize + fileSize + fileSize;
		fileChannel.position(fileSize);
		fileChannel.write(ByteBuffer.wrap("a".getBytes()));
		fileChannel.close();
	}

}
